#include "widget.h"
#include "ui_widget.h"
#include <QKeyEvent>
#include <QDebug>
#include "myeventfilter.h"
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    //设置焦点--有焦点的窗口只能有一个
    setFocusPolicy(Qt::StrongFocus);
    setTabOrder(this, ui->label);
    //安装事件过滤器
//    myEventFilter *filter = new myEventFilter(this);
//    installEventFilter(filter);
}

Widget::~Widget()
{
    delete ui;
}

//鼠标进入事件
void Widget::enterEvent(QEvent *event)
{
    if(event->type() == QEvent::Enter)
    {
        ui->label->setFocus();
    }
    QWidget::enterEvent(event);
}
//鼠标离开事件
void Widget::leaveEvent(QEvent *event)
{
    if(event->type() == QEvent::Leave)
    {
        setFocus();
    }
    QWidget::leaveEvent(event);
}

void Widget::keyPressEvent(QKeyEvent *ev)
{
    //1.获取输入
//    switch (event->key()) {
//        case Qt::Key_Up:
//            ui->label->move(ui->label->x(), ui->label->y()-5);
//            break;
//        case Qt::Key_Down:
//            ui->label->move(ui->label->x(), ui->label->y()+5);
//            break;
//        case Qt::Key_Left:
//            ui->label->move(ui->label->x()-5, ui->label->y());
//            break;
//        case Qt::Key_Right:
//            ui->label->move(ui->label->x()+5, ui->label->y());
//            break;
//        default:
//            break;
//    }
    //2.修饰键 modifiers() 返回的值是一个位掩码，表示多个修饰键的状态
    if(ev->modifiers() & Qt::ShiftModifier && ev->key() == Qt::Key_A) {
        qDebug() << "键入组合键shift+A";
    }
//    多个修饰键组合
    if ((ev->modifiers() & (Qt::ShiftModifier | Qt::ControlModifier)) && ev->key() == Qt::Key_X) {
        qDebug() << " Ctrl+Shift+X ";
    }
}

void Widget::keyReleaseEvent(QKeyEvent *ev)
{
    if (ev->key() == Qt::Key_Q) {
        ui->label->setText("q");
    }
}
